#include "BulletDynamics/Featherstone/btMultiBodyConstraint.h"
#ifdef __cplusplus
extern "C" {
#endif
btMultiBodyJacobianData* bullet_NewbtMultiBodyJacobianData(){
	btMultiBodyJacobianData* wrap_out = new btMultiBodyJacobianData();
	return wrap_out;
}

int bullet_btMultiBodyJacobianData_GetFieldOfM_fixedBodyId(btMultiBodyJacobianData* c_this){
	return (int)(c_this->m_fixedBodyId);
}

void bullet_btMultiBodyConstraint_allocateJacobiansMultiDof(btMultiBodyConstraint* c_this){
	c_this->allocateJacobiansMultiDof();
}

double bullet_btMultiBodyConstraint_getAppliedImpulse(btMultiBodyConstraint* c_this,int dof){
	int c_arg_dof=dof;
	btScalar c_out = c_this->getAppliedImpulse(c_arg_dof);
	double wrap_out = (c_out);
	return wrap_out;
}

int bullet_btMultiBodyConstraint_getConstraintType(btMultiBodyConstraint* c_this){
	int c_out = c_this->getConstraintType();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btMultiBodyConstraint_getLinkA(btMultiBodyConstraint* c_this){
	int c_out = c_this->getLinkA();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btMultiBodyConstraint_getLinkB(btMultiBodyConstraint* c_this){
	int c_out = c_this->getLinkB();
	int wrap_out = (c_out);
	return wrap_out;
}

double bullet_btMultiBodyConstraint_getMaxAppliedImpulse(btMultiBodyConstraint* c_this){
	btScalar c_out = c_this->getMaxAppliedImpulse();
	double wrap_out = (c_out);
	return wrap_out;
}

int bullet_btMultiBodyConstraint_getNumRows(btMultiBodyConstraint* c_this){
	int c_out = c_this->getNumRows();
	int wrap_out = (c_out);
	return wrap_out;
}

double bullet_btMultiBodyConstraint_getPosition(btMultiBodyConstraint* c_this,int row){
	int c_arg_row=row;
	btScalar c_out = c_this->getPosition(c_arg_row);
	double wrap_out = (c_out);
	return wrap_out;
}

void bullet_btMultiBodyConstraint_internalSetAppliedImpulse(btMultiBodyConstraint* c_this,int dof,double appliedImpulse){
	int c_arg_dof=dof;
	btScalar c_arg_appliedImpulse=appliedImpulse;
	c_this->internalSetAppliedImpulse(c_arg_dof,c_arg_appliedImpulse);
}

bool bullet_btMultiBodyConstraint_isUnilateral(btMultiBodyConstraint* c_this){
	bool c_out = c_this->isUnilateral();
	bool wrap_out = (c_out);
	return wrap_out;
}

double* bullet_btMultiBodyConstraint_jacobianA(btMultiBodyConstraint* c_this,int row){
	int c_arg_row=row;
	btScalar * c_out = c_this->jacobianA(c_arg_row);
	double* wrap_out = (double*)(void*)(c_out);
	return wrap_out;
}

double* bullet_btMultiBodyConstraint_jacobianA1(btMultiBodyConstraint* c_this,int row){
	int c_arg_row=row;
	btScalar const * c_out = c_this->jacobianA(c_arg_row);
	double* wrap_out = (double*)(void*)(c_out);
	return wrap_out;
}

double* bullet_btMultiBodyConstraint_jacobianB(btMultiBodyConstraint* c_this,int row){
	int c_arg_row=row;
	btScalar * c_out = c_this->jacobianB(c_arg_row);
	double* wrap_out = (double*)(void*)(c_out);
	return wrap_out;
}

double* bullet_btMultiBodyConstraint_jacobianB1(btMultiBodyConstraint* c_this,int row){
	int c_arg_row=row;
	btScalar const * c_out = c_this->jacobianB(c_arg_row);
	double* wrap_out = (double*)(void*)(c_out);
	return wrap_out;
}

void bullet_btMultiBodyConstraint_setMaxAppliedImpulse(btMultiBodyConstraint* c_this,double maxImp){
	btScalar c_arg_maxImp=maxImp;
	c_this->setMaxAppliedImpulse(c_arg_maxImp);
}

void bullet_btMultiBodyConstraint_setPosition(btMultiBodyConstraint* c_this,int row,double pos){
	int c_arg_row=row;
	btScalar c_arg_pos=pos;
	c_this->setPosition(c_arg_row,c_arg_pos);
}

void bullet_btMultiBodyConstraint_updateJacobianSizes(btMultiBodyConstraint* c_this){
	c_this->updateJacobianSizes();
}

#ifdef __cplusplus
}
#endif
